#include <iostream>

using namespace std;  

/* Luokan tilasto esittely - header osio*/
class Taulukko {
private:
  int *taulu;
  int sum;
  int koko;
public:
  Taulukko(int, int*);
  ~Taulukko();
  float summa();
  float keskiarvo();
  void tulosta();

}; // Puolipiste pakollinen!


/* Luokan metodien toteutus */
Taulukko::Taulukko(int koko, int* arvot) {
  cout << "konstruktori!" << std::endl;
  taulu = new int[koko];
  this->koko = koko;
  for (int i=0; i < koko; i++) this->taulu[i] = arvot[i]; 
}
Taulukko::~Taulukko() {
  cout << "destruktori!" << std::endl;
  delete[] taulu;
  taulu = NULL;
} 
float Taulukko::summa() {
  this->sum = 0;
  for (int i=0; i<this->koko; i++) {
    this->sum += taulu[i];
  }
  return this->sum;
}

float Taulukko::keskiarvo() {
  return summa() / koko;
}

void Taulukko::tulosta() {
  cout << "[";
  for (int i=0; i < koko; i++)  cout << this->taulu[i] << ","; 

  cout << "]" << std::endl;

}



/* Olio-ohjelmointi harjoitus */


int main(void) { 
  int koko = 20;
  int taulu[20] = {1,2,3,4,5,6,7,8,9,10,15,20,25,30,35, 40, 45, 50, 55, 100};

  Taulukko tauluOlio(koko, taulu); // Kutsuu konstruktoria
  cout << "Summa = " << tauluOlio.summa() << std::endl;

  float ka = tauluOlio.keskiarvo();
  cout << "Keskiarvo = " << ka << std::endl;

  tauluOlio.tulosta();

  return 0;
}